The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Presently, commercial spreadsheet applications like Microsoft® Excel and Open Office Calc cannot directly access and modify data that is stored in databases managed by a database server. One reason for this is that spreadsheet applications typically access spreadsheet data that is stored as files, while databases typically store data in non-file formats such as tables and other persistent database objects. Another reason is that it is not a trivial task to convert data stored in a database into data that can be rendered as a spreadsheet by a spreadsheet application.
To allow spreadsheet applications to access data stored in databases, past approaches invariably use some kind of intermediate, non-database server components that convert, translate, re-format, and/or otherwise process data from a database into spreadsheet data that can be rendered as a grid of cells by a spreadsheet application.
For example, some past approaches provide for data drivers that execute outside of a database server and that provide the functionalities that allow a spreadsheet application to retrieve data from, and store data in, a database managed by a database server. These functionalities may include data type conversions, translations, and re-formatting of data that is exchanged between the spreadsheet application and the database server managing the database. For example, a data driver would typically open a cursor with the data requested by a spreadsheet application, and would then process the cursor row-by-row and field-by-field by performing various operations to convert, translate, and/or reformat the data from the cursor into a form or format that is understood by the spreadsheet application. In order to modify data stored in a database managed by a database server, a data driver would similarly open a cursor at the database server and would then process any data changes against the data in the cursor. Examples of such data drivers are Java Database Connectivity (JDBC) drivers and Open Database Connectivity (ODBC) drivers.
The main disadvantage of these past approaches is that they add an additional, intermediate level of data processing that is performed outside of the database server that manages the data accessed and modified by a spreadsheet application. The additional, intermediate level of data processing increases user response times and is costly in terms of the computing resources used. In addition, since the intermediate level of data processing is performed outside of the database server, it cannot take advantage of various optimizations that the database server may otherwise provide for processing data stored in various databases managed by the database server.